#include "Rotate4.h"

Rotate4::Rotate4(){
	setRot(vec3(0), vec3(0));
}
Rotate4::Rotate4(float _a){
	setRot(vec3(_a), vec3(_a));
}
Rotate4::Rotate4(float _xy, float _xz, float _xw, float _yz, float _yw, float _zw){
	setRot(vec3(_xy, _xz, _xw), vec3(_yz, _yw, _zw));
}

Rotate4::Rotate4(vec3 _first, vec3 _second){
	setRot(_first, _second);
}

Rotate4::~Rotate4(){
}

mat4 Rotate4::getMatrix(){
	return rotationMatrix;
}

mat4 Rotate4::getInvMatrix(){
	return invRotationMatrix;
}

void Rotate4::setRot(vec3 _first, vec3 _second){
	xy = _first[0];
	xz = _first[1];
	xw = _first[2];
	yz = _second[0];
	yw = _second[1];
	zw = _second[2];
	updateMatrices();
}

void Rotate4::setRot(float _xy, float _xz, float _xw, float _yz, float _yw, float _zw){
	setRot(vec3(_xy, _xz, _xw), vec3(_yz, _yw, _zw));
}

void Rotate4::updateMatrices(){
	//calculate the rotation matrix
	//TEMPORARY ORDER: xy, xz, xw, yz, yw, zw
	rotationMatrix = mat4();

	//calculate the inverse rotation matrix
	invRotationMatrix = mat4();
}